@file:Suppress("unused")

/**
 * 此处定义android编译、构建、目标等版本
 *
 * 具体版本选择一般选择最新，各版本的新特性请参考[官网](https://developer.android.google.cn/about/versions)
 */
object Android {

    /**
     * 编译版本，指定代码编译使用的android版本，若有些代码找不到，可能移除了，也可能在新版本才有提供
     */
    const val compileSdkVersion = 34

    /**
     * 项目构建版本，一般为编译版本的最新小版本
     */
    const val buildToolsVersion = "34.0.0"

    /**
     * 最小sdk版本，指定app支持的最小android版本，如果代码提示改代码要求api多少，则可以通过更新此最小版本来解决该问题。
     * 若不是必须的功能，则应该根据运行的设备android版本分情况处理，一般来讲到api21已经支持很多功能了，在这之后由于
     * support包的使用，很多更新频繁的模块都拆分到扩展包中。
     */
    const val minSdkVersion = 21

    /**
     * app目标版本，即app必须支持到该版本的最新特性，例如将目标版本定义在android6.0以下，则可以不用动态申请权限。但谷歌
     * 为了推动应用开发者更新到支持新发布的android系统特性，所以要求在google play发布的目标版本最低是去年发布的android
     * 版本
     *
     * [android5.0](https://developer.android.google.cn/about/versions/android-5.0-changes)
     * - 材料设计
     * - recyclerView
     * - OpenGl ES 3.1
     *
     * [android6.0](https://developer.android.google.cn/about/versions/marshmallow/android-6.0)
     * - 运行时权限
     *
     * [android7.0](https://developer.android.google.cn/about/versions/nougat/android-7.0)
     * - 多窗口
     * - 应用间共享文件推荐使用FileProvider，并授予临时访问权限
     *
     * [android8.0](https://developer.android.google.cn/about/versions/oreo)
     * - 通知渠道
     * - Activity画中画模式
     * - 自动调整TextView大小
     * - 自填充框架
     * - 自适应图标
     *
     * [android9.0](https://developer.android.google.cn/about/versions/pie)
     * - 文件系统更新，统一使用ContentProvider进行应用间文件访问，不再使用File Api访问sd卡公开目录
     *
     * [android10](https://developer.android.google.cn/about/versions/10)
     * - 系统手势导航
     *
     * [android11](https://developer.android.google.cn/about/versions/11)
     * - 单次授权：针对位置信息，摄像头，麦克风，用户可对activity授予单次权限，退出后重进需要重新授权
     * - 权限对话框的可见性：用户选择不再询问后，再次调用权限请求代码将不会弹出权限请求对话框
     *
     */
    const val targetSdkVersion = 34

    /**
     * 新版本的gradle配置
     */
    const val compileSdk = compileSdkVersion
    const val minSdk = minSdkVersion
    const val targetSdk = targetSdkVersion
}